iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
Web 3

以 Python 進入以太坊虛擬機 (EVM) 的幻想境界系列 第 29

虛擬境界29:ZKEVM Proof 小結

  • 分享至 

  • xImage
  •  

前面提到過,ZKEVM 是靠兩種 Proof 所去驗證,分別為 State Proof 和 EVM Proof。

State Proof 與 EVM Proof 是相關連的概念,分別是用來在 off-chain(鏈下)證明鏈上數據的正確性,證明 (Proof) 是之中的核心概念。它提供一種方法,讓我們在其他機器不需要重新驗證所有交易,就能確認區塊或智慧合約的最終狀態是否正確。
State Proof 和 EVM Proof 主要被用來保證 Ethereum Virtual Machine (EVM) 的運行狀態和交易的執行結果的正確性。

再來分別用懶人包的形式解釋一下這兩個 Proof:

1. EVM Proof(以太坊虛擬機證明)

  1. 定義與目的:EVM Proof 主張狀態 trie root 的轉換是有效的,通過驗證塊中包含的所有交易擁有正確的執行結果。
  2. 交易的包含:區塊中包含的交易可以是簡單的以太幣轉賬、合約創建或合約交互,每個交易都有可變的執行軌跡。

EVM Proof 的主要目標是通過驗證區塊中包含的所有交易有正確的執行結果來辯護狀態trie根的轉換是有效的。給定一個或多個交易,EVM Proof 必須確認從初始狀態到結束狀態的轉換遵循 EVM 的規則。EVM Proof 並不是直接執行所有交易,而是使用 EVM 的規則和運行軌跡來檢查狀態的合法性。

要在 EVM Proof 中證明 State 和取得狀態的正確性,可以分為幾個步驟:

  1. 交易序列的正確性: 確保所有交易都按照它們在區塊中的順序進行執行。
  2. 狀態轉換的正確性: 確保每個交易從其初始狀態轉換到終止狀態遵循 EVM 的規則。
  3. 終止狀態的正確性: 確保交易執行後的終止狀態和區塊鏈上記錄的終止狀態相匹配。

2. State Proof(狀態證明)

  1. 定義與目的:State Proof 是為了協助 EVM Proof 檢查所有隨機讀寫訪問記錄的合法性。通過首先按照它們的唯一索引分組它們,然後按訪問順序對它們進行排序。
  2. 操作記錄:包含事務的開始、內存、堆疊、存儲、調用上下文、賬戶狀態等等的變動。
  3. 數據的唯一索引:所有表的鍵的連接成為數據的唯一索引。每條記錄都將附加一個 ReadWriteCounter,並且記錄首先被約束為按其唯一索引分組,然後按其 ReadWriteCounter 遞增排序。
  4. 電路:電路分為影響所有操作的全局和適用於每個操作的特定限制兩組。

State Proof 則專注於確保所有隨機讀寫存取記錄的正確性。它通過將它們首先通過它們的唯一索引進行分組,然後通過訪問順序對它們進行排序來輔助 EVM Proof。這裡的每一種操作(如 Memory, Stack, Storage 等)都有其特定的規則和約束,以確保它們的正確性。

要證明 OP (操作) 的正確性,你可以通過以下幾個方面:

  1. 參數的合法性: 每個操作是否使用了合法的參數(例如,索引是否在正確的範圍內,值是否遵循正確的格式等)。
  2. 運算的合法性: 操作是否產生了預期的結果(例如,算數操作是否返回了正確的值)。
  3. 順序的合法性: 操作是否按照允許的順序進行(例如,是否在存儲操作之前進行了必要的讀取操作)。

在EVM Proof和State Proof的框架下,我們可以有效地驗證智慧合約和其他交易的執行是否正確、安全、並且沒有做壞事。

兩者關係及區別

  • State Proof 的主要目的是將 EVM 中發生的所有讀寫操作(包括記憶體、存儲、堆疊等的讀寫)進行記錄和驗證,確保所有的操作都是合法且按照預定的規則進行。
  • EVM Proof 主要負責驗證 EVM 中每個交易的執行結果,確保從一個 state root 轉變到下一個 state root 的過程中所有的交易都被正確執行。
  • 二者的關係在於,State Proof 提供一個機制來檢查和驗證在 EVM 中所有的讀寫操作的正確性,而這些讀寫操作記錄是 EVM Proof 在驗證交易執行結果時所需要的。簡單來說,State Proof 為 EVM Proof 提供了一個查找表,以檢查和驗證其交易的執行。

在這邊為前面幾篇介紹 Proof 做個簡單的解釋,整體來說 ZKEVM 就是用電路來將執行過程和結果跑一次,產出證明後提交到驗證證明的位置(可能是合約或一個程式)。而對於每個 OpCode 操作,都要用 EVM Proof 去證明執行是有效且轉換 State 的過程是可以被證明的,而這些 State 也是需要透過證明去確認讀寫操作都是正常的。


上一篇
虛擬境界28:EVM Circuits 範例 - JUMPI
下一篇
虛擬境界30:ZKEVM + 結語
系列文
以 Python 進入以太坊虛擬機 (EVM) 的幻想境界30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言